#include <iostream>
using std::cout;
using std::endl;

class Point{
public:
    Point(int x, int y)
    :_x(x)
    ,_y(y)
    {

    }

    void print(){
        cout << _x << "," << _y << endl;
    }
    void print() const {
        cout << "const:" <<  _x << "," << _y << endl;
    }
    void display(){
        cout << "display" << endl;
    }

    void show() const {
        cout << "const show" << endl;
    }
private:
    int _x;
    int _y;
};


void test(){
    //const修饰的变量----const常量
    const int number = 2;//内置数据类型
    const Point pt(1, 3);//自定义数据类型
    //const修饰了对象之后，那么便成为const对象
    //const对象里面的数据成员应当是不可以改变的
    //如果能够随意调用任意的成员函数，那么如何保证
    //数据成员不会被修改呢？？？？
    //所以对于const对象来说，调用const成员函数
    //创建一个普通的对象
    Point pt2(3, 5);
    pt2.print();//非const版本
    pt.print();
    pt2.display();
    //pt.display();error
    pt.show();
    pt2.show();
}

int main()
{
    test();
    return 0;
}

